extends Card

# 燃血焚域卡牌
# 功能：透支X点能量，对所有敌人造成X伤害

@export var energy_overdraft: int = 3  # 透支的能量数量，可在tres文件中修改

func get_default_tooltip() -> String:
	# 使用replace方法替换所有%s占位符，避免格式化错误
	var formatted_text = tooltip_text
	formatted_text = formatted_text.replace("%s", str(energy_overdraft))
	return formatted_text

func get_updated_tooltip(_player_modifiers: ModifierHandler, _enemy_modifiers: ModifierHandler) -> String:
	# 动态更新提示文本，显示当前的透支能量和最终伤害值（包含力量增益和效果翻倍）
	var final_damage = energy_overdraft
	
	# 通过player_modifiers获取最终伤害值（包含力量增益和效果翻倍）
	if _player_modifiers:
		# 首先应用DMG_DEALT修改器（力量增益）
		var damage_with_power = _player_modifiers.get_modified_value(energy_overdraft, Modifier.Type.DMG_DEALT)
		
		# 然后应用CARD_EFFECT_MULTIPLIER修改器（效果翻倍）
		var multiplier_modifier = _player_modifiers.get_modifier(Modifier.Type.CARD_EFFECT_MULTIPLIER)
		if multiplier_modifier:
			var multiplier = multiplier_modifier.get_modified_value(1)
			final_damage = int(damage_with_power * multiplier)
			print("🔥 燃血焚域动态tooltip: 透支能量 %d，基础伤害 %d，力量增益后 %d，效果翻倍后 %d" % [energy_overdraft, energy_overdraft, damage_with_power, final_damage])
		else:
			final_damage = damage_with_power
			print("🔥 燃血焚域动态tooltip: 透支能量 %d，基础伤害 %d → 最终伤害 %d（无翻倍效果）" % [energy_overdraft, energy_overdraft, final_damage])
	
	# 使用split和join的方法来正确替换两个%s占位符
	var parts = tooltip_text.split("%s")
	if parts.size() >= 3:
		# 第一个%s替换为透支能量，第二个%s替换为最终伤害
		return parts[0] + str(energy_overdraft) + parts[1] + str(final_damage) + parts[2]
	else:
		# 如果占位符数量不对，回退到默认方法
		var temp_text = tooltip_text
		temp_text = temp_text.replace("%s", str(energy_overdraft))
		temp_text = temp_text.replace("%s", str(final_damage))
		return temp_text

func apply_effects(targets: Array[Node], modifiers: ModifierHandler) -> void:
	print("燃血焚域卡牌被使用！")
	
	var player = null
	
	# 通过targets参数获取场景树
	if targets.size() > 0:
		var tree = targets[0].get_tree()
		player = Card.find_player(tree)
		
		if player and player.stats:
			# 透支能量：增加new_loan_mana
			var old_new_loan = player.stats.new_loan_mana
			player.stats.new_loan_mana += energy_overdraft
			print("透支能量: new_loan_mana %d → %d (+%d)" % [old_new_loan, player.stats.new_loan_mana, energy_overdraft])
			
			# 对所有敌人造成伤害 - 使用DamageEffect确保力量增益生效
			var all_enemies = tree.get_nodes_in_group("enemies")
			print("找到敌人数量: %d" % all_enemies.size())
			
			for enemy in all_enemies:
				if enemy is Enemy:
					# 计算最终伤害值（包含力量增益）
					var final_damage = modifiers.get_modified_value(energy_overdraft, Modifier.Type.DMG_DEALT)
					print("血炎燎原效果触发，目标: %s，基础伤害: %d，最终伤害: %d" % [enemy.name, energy_overdraft, final_damage])
					
					# 创建DamageEffect并应用DMG_DEALT修改器（包括力量增益）
					var damage_effect := DamageEffect.new()
					damage_effect.amount = final_damage
					damage_effect.sound = sound
					damage_effect.execute([enemy])
				else:
					print("目标不是Enemy类型: %s" % enemy.get_class())
			
			# 播放音效
			if sound:
				SFXPlayer.play(sound)
		else:
			print("无法获取玩家或玩家状态")
	else:
		print("没有目标，无法执行效果") 
